═══ 1. Introduction ═══ The REXX Socket Support package provides access to the OS/2 TCP/IP socket API's. It is assumed you are familiar with the basic socket APIs and that you can reference the OS/2 specific ones. References For information on socket calls, refer to the IBM Transmission Control Protocol/Internet Protocol Version 2.0 for OS/2: Programmer's Reference. A widely available book with information on the basic socket APIs is Internetworking with TCP/IP Volume I: Principals, Protocols, and Architecture by Douglas Comer. Requirements The REXX Socket Support package requires the OS/2 TCP/IP product, version 2.0 or higher. The REXX feature from the OS/2 Setup and Installation window must be installed. To access the REXX feature, choose Selective Install from the OS/2 System Setup folder. Then from the System Configuration window, select OK to display the OS/2 Setup and Installation window. Check the REXX feature and select the Install push button. ═══ 2. Installation ═══ The REXX Socket Support package is contained in the file rxsock.dll. This dynamic link library (DLL) needs to be placed in a directory listed in your LIBPATH statement in your CONFIG.SYS file. To get access to the functions in the REXX Socket Support package, execute the following REXX code: rc = RxFuncAdd("SockLoadFuncs","rxSock","SockLoadFuncs") rc = SockLoadFuncs() To unload the DLL, you should first call the SockDropFuncs() function, then exit all CMD.EXE shells. After exiting all the command shells, the DLL will be dropped by OS/2 and can be deleted or replaced. ═══ 3. Parameters, Return Values, and Parameters Set ═══ Select an item: Parameters socket domain address dotAddress host Return Values Variables Set errno h_errno ═══ Return Values ═══ Return values for most functions are the same as the C equivalents, unless otherwise noted. ═══ socket Parameter ═══ The socket parameter is the socket value. It is an integer number that is returned from SockSocket(). ═══ domain Parameter ═══ The domain parameter is the domain value. The only supported domain is "AF_INET". ═══ address Parameter ═══ The address parameter is the 'stem' of a stemmed variable with the following values: address.family always set this to "AF_INET" address.port a port number address.addr a dotted decimal address, or where appropriate, INADDR_ANY When the address parameter is needed, you should set it to the name of a stem variable for the function to set (or that the function will read from). For example, if you passed the string "xxx.!" as a parameter, the following variables will be set by the function, or queried by the function: "xxx.!family" "xxx.!port" "xxx.!addr" Related Topic Notes on stemmed variables ═══ dotAddress Parameter ═══ The dotAddress is the standard dotted decimal address. For example, the following string is a valid address: "9.23.19.63" ═══ host Parameter ═══ The host parameter is the 'stem' of a stemmed variable with the following values: host.name the standard name of the host host.alias.0 the number of aliases for this host host.alias.1 the first alias for this host host.alias.n the n'th alias for this host host.addrtype always set this to "AF_INET" host.addr a dotted decimal address (default address) host.addr.0 the number of addresses for this host host.addr.1 the first address for this host host.addr.n the n'th address for this host When the host parameter is needed, you should set it to the name of a stem variable for the function to set (or that the function will read from). For example, if you passed the string "xxx.!" as a parameter, the following variables will be set by the function, or queried by the function: "xxx.!name" "xxx.!alias.0", "xxx.!alias.1" ... "xxx.!alias.n" "xxx.!addrtype" "xxx.!addr" "xxx.!addr.0", "xxx.!addr.1" ... "xxx.!addr.n" Related Topic Notes on stemmed variables ═══ Notes on Stemmed Variables ═══ The address parameter and host parameters are stemmed variable names. The SockSelect() call also has stemmed variables. Traditionally, you would pass a string like "addr." as a parameter, and expect to have the variables addr.family, addr.port, and addr.addr set by the function. In the examples given in this document, stems like "addr.!" are used. The exclamation point helps to distinguish the tail values, so they will not be used as normal variables. For example, with the following code you might expect the say statement to write the port number of the accepted socket. Instead it writes the value of the variable addr.923, since the port variable is set to a value. port = 923 sNew = SockAccept(sOld,"addr.") say addr.port Since you normally do not use an exclamation point in your variables, it's unlikely that you will be using the variable "!port" in your program. Also note, some programmers prefer other characters, including "_", "0", and "1". The digits are allowed to prefix tail values and are very secure against this kind of accidental misuse. However, the digit characters are hard to distinguish from O, I, and l. ═══ errno Variable ═══ The errno variable is set after every REXX Socket Support (rxSock) function call. The value of 0 indicates no error occurred. The value is set even if the C API that the REXX function callc does not set the variable. In that case, the value has no meaning. The errno variable will have one of the following values (or a numeric value if the number is not one of these values): "EWOULDBLOCK" "EINPROGRESS" "EALREADY" "ENOTSOCK" "EDESTADDRREQ" "EMSGSIZE" "EPROTOTYPE" "ENOPROTOOPT" "EPROTONOSUPPORT" "ESOCKTNOSUPPORT" "EOPNOTSUPP" "EPFNOSUPPORT" "EAFNOSUPPORT" "EADDRINUSE" "EADDRNOTAVAIL" "ENETDOWN" "ENETUNREACH" "ENETRESET" "ECONNABORTED" "ECONNRESET" "ENOBUFS" "EISCONN" "ENOTCONN" "ESHUTDOWN" "ETOOMANYREFS" "ETIMEDOUT" "ECONNREFUSED" "ELOOP" "ENAMETOOLONG" "EHOSTDOWN" "EHOSTUNREACH" "ENOTEMPTY" ═══ h_errno Variable ═══ The h_errno variable is set after every REXX Socket Support (rxSock) function call. The value of 0 indicates no error occurred. The value is set even if the C API that the REXX function calls does not set the variable. In that case, the value has no meaning. The h_errno variable will have one of the following values (or a numeric value if the number is not one of these values): "HOST_NOT_FOUND" "TRY_AGAIN" "NO_RECOVERY" "NO_ADDRESS" ═══ 4. Functions ═══ Most of the functions correspond to their like-named C functions available in the OS/2 TCP/IP socket library. Initialization Functions SockLoadFuncs() SockDropFuncs() SockVersion() SockInit() Socket Connections Functions SockAccept() SockBind() SockConnect() SockClose() SockSoClose() SockListen() SockShutDown() SockSocket() Address and Name Functions SockGetHostByAddr() SockGetHostByName() SockGetHostID() SockGetPeerName() SockGetSockName() Sending and Receiving Functions SockRecv() SockRecvFrom() SockSelect() SockSend() SockSendTo() Socket Options Functions SockSetSockOpt() SockGetSockOpt() Error Functions SockPSock_Errno() SockSock_Errno() Commands Function SockIoctl() ═══ Initialization ═══  SockLoadFuncs()  SockDropFuncs()  SockVersion()  SockInit()  Calls by Task ═══ Connections ═══  SockAccept()  SockBind()  SockConnect()  SockClose()  SockSoClose()  SockListen()  SockShutDown()  SockSocket()  Calls by Task ═══ Address/Name ═══  SockGetHostByAddr()  SockGetHostByName()  SockGetHostID()  SockGetPeerName()  SockGetSockName()  Calls by Task ═══ Send/Receive ═══  SockRecv()  SockRecvFrom()  SockSelect()  SockSend()  SockSendTo()  Calls by Task ═══ Options ═══  SockSetSockOpt()  SockGetSockOpt()  Calls by Task ═══ Errors ═══  SockPSock_Errno()  SockSock_Errno()  Calls by Task ═══ Commands ═══  SockIoctl()  Calls by Task ═══ 4.1. SockAccept() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockAccept() ═══ /* Implements the C function accept() */ socket = SockAccept(socket<,address>) ═══ Definition for SockAccept() ═══ The SockAccept() call implements the C function accept(). ═══ Parameters for SockAccept() ═══  socket  address (optional) ═══ Return Values for SockAccept() ═══ Returns the same values as the C API call. ═══ 4.2. SockBind() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockBind() ═══ /* Implements the C function bind() */ rc = SockBind(socket,address) ═══ Definition for SockBind() ═══ The SockBind() call implements the C function bind(). ═══ Parameters for SockBind() ═══  socket  address ═══ Return Values for SockBind() ═══ Returns the same values as the C API call. ═══ 4.3. SockClose() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockClose() ═══ /* Implements the TCP/IP C API function soclose() */ rc = SockClose(socket) ═══ Definition for SockClose() ═══ The SockClose() call implements the TCP/IP C API function soclose(). The SockClose() call is exactly the same as the SockSoClose() call. ═══ Parameters for SockClose() ═══  socket ═══ Return Values for SockClose() ═══ Returns the same values as the C API call. ═══ 4.4. SockConnect() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockConnect() ═══ /* Implements the C function connect() */ rc = SockConnect(socket,address) ═══ Definition for SockConnect() ═══ The SockConnect() call implements the C function connect(). ═══ Parameters for SockConnect() ═══  socket  address ═══ Return Values for SockConnect() ═══ Returns the same values as the C API call. ═══ 4.5. SockDropFuncs() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockDropFuncs() ═══ /* Drops all functions in the REXX Socket Support package */ rc = SockDropFuncs() ═══ Definition for SockDropFuncs() ═══ The SockDropFuncs() call drops all the functions in the REXX Socket Support package. To unload the DLL, you should first call the SockDropFuncs() function, then exit all CMD.EXE shells. After exiting all the command shells, the DLL will be dropped by OS/2 and can be deleted or replaced. ═══ Parameters for SockDropFuncs() ═══ none ═══ Return Values for SockDropFuncs() ═══ Returns the same values as the C API call. ═══ 4.6. SockGetHostByAddr() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetHostByAddr() ═══ /* Implements the C function gethostbyaddr() */ rc = SockGetHostByAddr(dotAddress,host<,domain>) ═══ Definition for SockGetHostByAddr() ═══ The SockGetHostByAddr() call implements the C function gethostbyaddr(). ═══ Parameters for SockGetHostByAddr() ═══  dotAddress  host  domain (optional) ═══ Return Values for SockGetHostByAddr() ═══ 1 when SockGetHostByAddr() is successful. 0 when SockGetHostByAddr() has an error. ═══ 4.7. SockGetHostByName() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetHostByName() ═══ /* Implements the C function gethostbyname() */ rc = SockGetHostByName(nameAddress,host) ═══ Definition for SockGetHostByName() ═══ The SockGetHostByName() call implements the C function gethostbyname(). The nameAddress should be the textual name of a host. For example: "chris.vnet.ibm.com" ═══ Parameters for SockGetHostByName() ═══  nameAddress - the textual name of a host. For example: "chris.vnet.ibm.com"  host ═══ Return Values for SockGetHostByName() ═══ 1 when SockGetHostByName() is successful. 0 when SockGetHostByName() has an error. ═══ 4.8. SockGetHostId() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetHostId() ═══ /* Implements the C function gethostid() */ dotAddress = SockGetHostId() ═══ Definition for SockGetHostId() ═══ The SockGetHostId() call implements the C function gethostid(). ═══ Parameters for SockGetHostId() ═══ none ═══ Return Values for SockGetHostId() ═══ Returns the same values as the C API call. ═══ 4.9. SockGetPeerName() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetPeerName() ═══ /* Implements the C function getpeername() */ rc = SockGetPeerName(socket,address) ═══ Definition for SockGetPeerName() ═══ The SockGetPeerName() call implements the C function getpeername(). ═══ Parameters for SockGetPeerName() ═══  socket  address ═══ Return Values for SockGetPeerName() ═══ Returns the same values as the C API call. ═══ 4.10. SockGetSockName() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetSockName() ═══ /* Implements the C function getsockname() */ rc = SockGetSockName(socket,address) ═══ Definition for SockGetSockName() ═══ The SockGetSockName() call implements the C function getsockname(). ═══ Parameters for SockGetSockName() ═══  socket  address ═══ Return Values for SockGetSockName() ═══ Returns the same values as the C API call. ═══ 4.11. SockGetSockOpt() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockGetSockOpt() ═══ /* Implements the C function getsockopt() */ rc = SockGetSockOpt(socket,level,optVar,optVal) ═══ Definition for SockGetSockOpt() ═══ The SockGetSockOpt() call implements the C function getsockopt(). ═══ Parameters for SockGetSockOpt() ═══  socket  level - "SOL_SOCKET" is the only valid value.  optVar - contains one of the following values after the call is made: "SO_BROADCAST" "SO_DEBUG" "SO_DONTROUTE" "SO_ERROR" "SO_KEEPALIVE" "SO_LINGER" "SO_OOBINLINE" "SO_RCVBUF" "SO_RCVLOWAT" "SO_RCVTIMEO" "SO_REUSEADDR" "SO_SNDBUF" "SO_SNDLOWAT" "SO_SNDTIMEO" "SO_TYPE" "SO_USELOOPBACK"  optVal - the value of the option. Generally, the values for optVal are integers. The exceptions are: "SO_LINGER" expects two blank delimited integers. The first is the l_onoff value and the second is the l_linger value. "SO_TYPE" a string of either "STREAM", "DGRAM", or "RAW" ═══ Return Values for SockGetSockOpt() ═══ Returns the same values as the C API call. ═══ 4.12. SockInit() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockInit() ═══ /* Implements the C function sock_init() */ rc = SockInit() ═══ Definition for SockInit() ═══ The SockInit() call implements the C function sock_init(). For each REXX Socket Support (rxSock) function call, initialization is done if initialization has not yet occurred. Therefore, the SockInit() call is not needed. ═══ Parameters for SockInit() ═══ none ═══ Return Values for SockInit() ═══ Returns the same values as the C API call. ═══ 4.13. SockIoctl() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockIoctl() ═══ /* Implements the C function ioctl() */ rc = SockIoctl(socket,ioctlCmd,ioctlData) ═══ Definition for SockIoclt() ═══ The SockIoclt() call implements the C function ioclt(). ═══ Parameters for SockIoclt() ═══  socket  ioctlCmd - the ioctl command to perform. The valid commands are: "FIONBIO" "FIONREAD"  ioctlData - the command specific value. The valid values are: "FIONBIO" - "1" or "0" "FIONREAD" - name of a variable to contain the number of readable bytes ═══ Return Values for SockIoclt() ═══ Returns the same values as the C API call. ═══ 4.14. SockListen() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockListen() ═══ /* Implements the C function listen() */ rc = SockListen(socket,backlog) ═══ Definition for SockListen() ═══ The SockListen() call implements the C function listen(). ═══ Parameters for SockListen() ═══  socket  backlog - maximum length for the queue of pending connections. ═══ Return Values for SockListen() ═══ Returns the same values as the C API call. ═══ 4.15. SockLoadFuncs() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockLoadFuncs() ═══ /* Loads all functions in the REXX Socket Support package */ rc = SockLoadFuncs() ═══ Definition for SockLoadFuncs() ═══ The SockLoadFuncs() call loads all the functions in the REXX Socket Support package. ═══ Parameters for SockLoadFuncs() ═══ SockLoadFuncs() - If any parameters are passed to this function, it will bypass the copyright information that is normally displayed. All parameters are ignored (except to determine whether or not to bypass displaying the information). ═══ Return Values for ═══ SockLoadFuncs() Returns the same values as the C API call. ═══ 4.16. SockPSock_Errno() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockPSock_Errno() ═══ /* Implements the C function psock_errno() */ SockPSock_Errno() ═══ Definition for SockPSock_Errno() ═══ The SockPSock_Errno() call implements the C function psock_errno(). ═══ Parameters for SockPSock_Errno() ═══ error_string (optional) The error string that is written to the standard error device. It describes the last error encountered. The output to the standard error device has the following format:  the error string  a colon  a space  the error message from sock_errno() ═══ Return Values for SockPSock_Errno() ═══ Returns the same values as the C API call. ═══ 4.17. SockRecv() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockRecv() ═══ /* Implements the C function recv() */ rc = SockRecv(socket,var,len<,flags>) ═══ Definition for SockRecv() ═══ The SockRecv call implements the C function recv(). ═══ Parameters for SockRecv() ═══ socket var name of a REXX variable that data should be received into. len maximum amount of data to read. flags (optional) a blank delimited list of options. The options are: "MSG_OOB" and "MSG_PEEK". ═══ Return Values for SockRecv() ═══ Returns the return code from the recv() function. ═══ 4.18. SockRecvFrom() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockRecvFrom() ═══ /* Implements the C function recvfrom() */ rc = SockRecvFrom(socket,var,len<,flags>,address) ═══ Definition for SockRecvFrom() ═══ The SockRecvFrom call implements the C function recvfrom(). ═══ Parameters for SockRecvFrom() ═══ socket var name of a REXX variable that data should be received into. len maximum amount of data to read. flags (optional) a blank delimited list of options. The options are: "MSG_OOB" and "MSG_PEEK". address ═══ Return Values for SockRecvFrom() ═══ Returns the return code from the recvfrom() C function. ═══ 4.19. SockSelect() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSelect() ═══ /* Implements the C function select() */ rc = SockSelect(reads,writes,excepts<,timeout>) ═══ Definition for SockSelect() ═══ The SockSelect call implements the C function select(). ═══ Parameters for SockSelect() ═══ reads,writes,excepts The reads, writes, and excepts parameters are stem variables which are queried and set by this function. The stem.0 variable should contain the number of sockets, stem.1 the first socket, etc. Upon return, the stem variables will be reset to the sockets which are ready. For example: r.0 = 2 r.1 = 101 r.2 = 102 w.0 = 1 w.1 = 103 e.0 = 0 rc = SockSelect("r.","w.","e.") do i = 1 to r.0 say "socket" r.i "is ready for reading." end If any of the stem variables are "", no parameter is passed and no sockets for that type will be checked. For example, the SockSelect() call above could have been invoked as either: rc = SockSelect("r.","w.","") rc = SockSelect("r.","w.",) timeout The timeout parameter is the number of seconds to wait before timing out. The number must be integer. For no waiting, use a value of 0. To wait indefinitely, use "". If no timeout value is passed, "" is assumed. Non-numeric and negative numbers are considered 0. The function call SockSelect(,,,3) results in the program pausing for 3 seconds. Related Topic Notes on stemmed variables ═══ Return Values for SockSelect() ═══ The return value from SockSelect() is the number of ready sockets. If a timeout occurred, a value of 0 is returned and the socket arrays are not modified. ═══ 4.20. SockSend() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSend() ═══ /* Implements the C function send() */ rc = SockSend(socket,data<,flags>) ═══ Definition for SockSend() ═══ The SockSend call implements the C function send(). ═══ Parameters for SockSend() ═══ socket data a string of text to be sent on the sock. flags (optional) a blank delimited list of options. The options are: "MSG_OOB" and "MSG_DONTROUTE". ═══ Return Values for SockSend() ═══ Returns the return code from the send() C function. ═══ 4.21. SockSendTo() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSendTo() ═══ /* Implements the C function sendto() */ rc = SockSendTo(socket,data<,flags>,address) ═══ Definition for SockSendTo() ═══ The SockSendTo() call implements the C function sendto(). ═══ Parameters for SockSendTo() ═══ socket data a string of text to be sent on the sock. flags (optional) the only option is "MSG_DONTROUTE". address ═══ Return Values for SockSendTo() ═══ Returns the return code from the sendto() C function. ═══ 4.22. SockSetSockOpt() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSetSockOpt() ═══ /* Implements the C function setsockopt() */ rc = SockSetSockOpt(socket,level,optVar,optVal) ═══ Definition for SockSetSockOpt() ═══ The SockSetSockOpt() call implements the C function setsockopt(). ═══ Parameters for SockSetSockOpt() ═══  socket  level - "SOL_SOCKET" is the only valid value.  optVar - the values are: "SO_BROADCAST" "SO_DEBUG" "SO_DONTROUTE" "SO_KEEPALIVE" "SO_LINGER" "SO_OOBINLINE" "SO_RCVBUF" "SO_RCVLOWAT" "SO_RCVTIMEO" "SO_REUSEADDR" "SO_SNDBUF" "SO_SNDLOWAT" "SO_SNDTIMEO" "SO_USELOOPBACK"  optVal - the value of the option. Generally, the values for optVal are integers. The exceptions are: "SO_LINGER" expects two blank delimited integers. The first is the l_onoff value and the second is the l_linger value. "SO_TYPE" a string of either "STREAM", "DGRAM", or "RAW" ═══ Return Values for SockSetSockOpt() ═══ Returns the same values as the C API call. ═══ 4.23. SockShutDown() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockShutDown() ═══ /* Implements the C function shutdown() */ rc = SockShutDown(socket,how) ═══ Definition for SockShutDown() ═══ The SockShutDown() call implements the C function shutdown(). ═══ Parameters for SockShutDown() ═══  socket  how - identifies the condition of the shutdown. The values are: 0 ends communication from the socket. 1 ends communication to the socket. 2 ends communication both from and to the socket. ═══ Return Values for SockShutDown() ═══ Returns the same values as the C API call. ═══ 4.24. SockSock_Errno() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSock_Errno() ═══ /* Implements the C function sock_errno() */ errno = SockSock_Errno() ═══ Definition for SockSock_Errno() ═══ The SockSock_Errno() call implements the C function sock_errno(). ═══ Parameters for SockSock_Errno() ═══ none ═══ Return Values for SockSock_Errno() ═══ errno the numerical error value of last error that occurred. ═══ 4.25. SockSocket() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSocket() ═══ /* Implements the C function socket() */ socket = SockSocket(domain,type,protocol) ═══ Definition for SockSocket() ═══ The SockSocket() call implements the C function socket(). ═══ Parameters for SockSocket() ═══ domain type may be "SOCK_STREAM", "SOCK_DGRAM", or "SOCK_RAW". protocol may be "IPPROTO_UDP", "IPPROTO_TCP", or "0". ═══ Return Values for SockSocket() ═══ Returns the same values as the C API call. ═══ 4.26. SockSoClose() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockSoClose() ═══ /* Implements the C function soclose() */ rc = SockSoClose(socket) ═══ Definition for SockSoClose() ═══ The SockSoClose() call implements the C function soclose(). The SockSoClose() call is exactly the same as the SockClose() call. ═══ Parameters for SockSoClose() ═══  socket ═══ Return Values for SockSoClose() ═══ Returns the same values as the C API call. ═══ 4.27. SockVersion() ═══ Select an item:  Syntax  Parameters  Return Values  Definition  Related Calls ═══ Syntax for SockVersion() ═══ /* Identifies the version of the REXX Socket Support package */ vers = SockVersion() ═══ Definition for SockVersion() ═══ The SockVersion() call identifies the version of the REXX Socket Support package. The current version is 2.0. ═══ Parameters for SockVersion() ═══ none ═══ Return Values for SockVersion() ═══ Returns the REXX Socket Support package version number.